package com.love.marriage.userMembershipInfo.vo;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.love.marriage.common.vo.BaseVo;
import com.love.marriage.config.Long2StringSerializer;
import com.love.marriage.identityVerification.vo.IdentityVerificationVo;
import com.love.marriage.userInfo.vo.UserInfoVo;
import com.love.marriage.userProfileInfo.vo.UserProfileInfoVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * description:  用户会员表Vo
 * author:       mybatisPlus
 * createDate:   2024-10-17 07:29:59
 * version:      1.0.0
 */
@Getter
@Setter
@Accessors(chain = true)
@Schema(name = "UserMembershipInfoPageVo", description = "用户会员表Vo")
public class UserMembershipInfoPageVo extends BaseVo<UserMembershipInfoPageVo>{

    @JsonSerialize(using = Long2StringSerializer.class)
    @Schema(description = "用户ID", type = "Long", implementation = Long.class)
    private Long userId;

    @JsonSerialize(using = Long2StringSerializer.class)
    @Schema(description = "会员ID，关联会员配置", type = "Long", implementation = Long.class)
    private Long membershipId;

    @Schema(description = "会员开始时间", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime startTime;

    @Schema(description = "会员结束时间", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime endTime;

    @Schema(description = "编码", type = "String", implementation = String.class)
    private String code;

    @Schema(description = "昵称", type = "String", implementation = String.class)
    private String nickname;

    @Schema(description = "会员状态", type = "Boolean", implementation = Boolean.class)
    private Boolean memberFlag;

    @Schema(description = "会员类型名称（如：季度会员、年会员等）", type = "String", implementation = String.class)
    private String membershipName;

    @Schema(description = "用户信息", type = "UserInfoVo", implementation = UserInfoVo.class)
    private UserInfoVo userInfoVo;

    @Schema(description = "用户档案信息", type = "UserProfileInfoVo", implementation = UserProfileInfoVo.class)
    private UserProfileInfoVo userProfileInfoVo;

    @Schema(description = "身份信息", type = "IdentityVerificationVo", implementation = IdentityVerificationVo.class)
    private IdentityVerificationVo identityVerificationVo;
}
